home *** CD-ROM | disk | FTP | other *** search
/ The Amiga Classic Collection / The Amiga Classic Collection - Disc 1.iso / Education / ED16-CrosswordCreator.DMS / ED16-CrosswordCreator.adf / Source / CPCRequesters.mod < prev    next >
Text File  |  1991-07-13  |  3KB  |  125 lines

  1. IMPLEMENTATION MODULE CPCRequesters;
  2.  
  3.  
  4.  
  5. IMPORT Conversions;
  6. IMPORT CPCGlobal;
  7. IMPORT Requester;
  8. IMPORT RequesterSet;
  9. IMPORT String;
  10. IMPORT SYSTEM;
  11.  
  12.  
  13.  
  14. PROCEDURE InputLine(VAR a: ARRAY OF CHAR; txt,ref: ARRAY OF CHAR;
  15.                     length: INTEGER);
  16.  VAR
  17.   message: ARRAY[0..0] OF Requester.Text;
  18.   res,flag: BOOLEAN;
  19.   i: INTEGER;
  20.   l: INTEGER;
  21.   x: ARRAY[0..256] OF CHAR;
  22.  BEGIN
  23.   FOR i:=0 TO 256 DO
  24.    x[i]:="\o";
  25.   END;
  26.   String.Copy(message[0],txt);
  27.   String.Copy(x,a);
  28.   REPEAT
  29.    Requester.SetReqBorderPen(1);
  30.    Requester.SetReqTextPen(0);
  31.    res:=RequesterSet.StringRequest(CPCGlobal.window,50,50,540,55,
  32.                       message,x,SYSTEM.ADR(CPCGlobal.msg[72]),
  33.                       SYSTEM.ADR(CPCGlobal.msg[73]),
  34.                       Requester.ReqFlagSet{Requester.reqBorder,Requester.reqShadow},
  35.                       FALSE);
  36.    flag:=FALSE;
  37.    IF String.Length(x)=0 THEN
  38.     res:=FALSE;
  39.    END;
  40.    IF res THEN
  41.     FOR i:=0 TO String.Length(x)-1 DO
  42.      flag:=flag OR (String.FirstPos(ref,0,x[i])=String.noOccur);
  43.     END;
  44.    END;
  45.    IF flag THEN
  46.     String.Copy(message[0],CPCGlobal.msg[78]);
  47.    END;
  48.    l:=String.Length(x);
  49.    IF l>length THEN
  50.     String.Copy(message[0],CPCGlobal.msg[80]);
  51.     flag:=TRUE;
  52.    END;
  53.   UNTIL NOT flag;
  54.   IF NOT res THEN
  55.    x[0]:="\o";
  56.   END;
  57.   String.Copy(a,x);
  58.  END InputLine;
  59.  
  60.  
  61.  
  62. PROCEDURE InputNum(txt: ARRAY OF CHAR; low,high,def: INTEGER; odd: BOOLEAN): INTEGER;
  63.  VAR
  64.   err,sgn: BOOLEAN;
  65.   numstr: ARRAY[0..20] OF CHAR;
  66.   val: INTEGER;
  67.   tmpval: LONGINT;
  68.  BEGIN
  69.   Conversions.ValToStr(def,FALSE,numstr,10,0,"0",err);
  70.   IF err THEN
  71.    RETURN -1;
  72.   END;
  73.   REPEAT
  74.    InputLine(numstr,txt,"0123456789",10);
  75.    IF String.Length(numstr)=0 THEN
  76.     RETURN -1;
  77.    END;
  78.    sgn:=FALSE;
  79.    Conversions.StrToVal(numstr,tmpval,sgn,10,err);
  80.    val:=tmpval;
  81.    IF err THEN
  82.     RETURN -1;
  83.    END;
  84.   UNTIL ((NOT odd) OR ODD(val)) AND (val>=low) AND (val<=high);
  85.   RETURN val;
  86.  END InputNum;
  87.  
  88.  
  89.  
  90. PROCEDURE YesOrNo(txt: ARRAY OF CHAR): BOOLEAN;
  91.  VAR
  92.   t: ARRAY[0..0] OF Requester.Text;
  93.   res: BOOLEAN;
  94.  BEGIN
  95.   String.Copy(t[0],txt);
  96.   Requester.SetReqBorderPen(1);
  97.   Requester.SetReqTextPen(0);
  98.   res:=RequesterSet.BooleanRequest(CPCGlobal.window,50,50,540,55,t,
  99.                      SYSTEM.ADR(CPCGlobal.msg[74]),
  100.                      SYSTEM.ADR(CPCGlobal.msg[75]),"\o","\o",
  101.                      Requester.ReqFlagSet{Requester.reqBorder,Requester.reqShadow});
  102.   RETURN res;
  103.  END YesOrNo;
  104.  
  105.  
  106.  
  107. PROCEDURE HoriOrVert(txt: ARRAY OF CHAR): BOOLEAN;
  108.  VAR
  109.   t: ARRAY[0..0] OF Requester.Text;
  110.   res: BOOLEAN;
  111.  BEGIN
  112.   String.Copy(t[0],txt);
  113.   Requester.SetReqBorderPen(1);
  114.   Requester.SetReqTextPen(0);
  115.   res:=RequesterSet.BooleanRequest(CPCGlobal.window,50,50,540,55,t,
  116.                      SYSTEM.ADR(CPCGlobal.msg[76]),
  117.                      SYSTEM.ADR(CPCGlobal.msg[77]),"\o","\o",
  118.                      Requester.ReqFlagSet{Requester.reqBorder,Requester.reqShadow});
  119.   RETURN res;
  120.  END HoriOrVert;
  121.  
  122.  
  123.  
  124. END CPCRequesters.
  125.